package cn.jbolt.ai.resource.function.service;


import com.baomidou.mybatisplus.extension.service.IService;
import cn.jbolt.ai.resource.function.entity.AiFunctionResource;
import cn.jbolt.util.Result;
import com.jboltai.resource.functioncall.FunctionResource;

import java.util.List;

public interface AiFunctionResourceService extends IService<AiFunctionResource> {

    /**
     * 根据ID获取AI函数信息
     *
     * @param id AI函数ID
     * @return AI函数信息
     */
    Result getFunctionById(Long id);

    /**
     * 获取所有AI函数信息
     *
     * @return 所有AI函数列表
     */
    Result listByPage(Integer page, Integer pageSize, String keywords, Integer type, Boolean enable);

    /**
     * 添加新的AI函数
     *
     * @param function 新的AI函数对象
     * @return 是否添加成功
     */
    Result add(AiFunctionResource function);





    /**
     * 修改AI函数的启用状态
     *
     * @param id AI函数ID
     * @param
     * @return 是否修改成功
     */
    Result toggleEnable(Long id);





    /**
     * app挂载function的时候找到他的函数介绍
     *
     * @param functions

     * @return
     */
    List<AiFunctionResource> getFunctionResourceList(String[] functions);
    /**
     * 项目启动的时候,注册所有的资源
     */
    void registerAllResource();


    /**
     * 根虎funticonId集合返回blotFunction
     *
     * @param idList
     * @return
     */
    Result<List<FunctionResource>> getJblotFunctionList(List<String> idList);

    /**
     * 同步本地Function资源
     *
     * @param strategyCode
     * @return
     */
    Result syncNativeFunctions(String strategyCode);

    /**
     * 获取同步策略列表
     *
     * @return
     */
    Result syncStrategyList();




    /**
     * 更新AI函数的参数个数
     * @param aiFunctionId
     * @param increment
     * @return
     */
     Result updateFunctionParamCount(Long aiFunctionId, int increment);

    /**
     * 检查函数的状态,一般在操作参数前判断
     *
     * @return
     */
     Result checkFunctionStatus(Long id);
}
